home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / madtrb34.arc / FLCOPY.PAS < prev    next >
Pascal/Delphi Source File  |  1986-04-06  |  1KB  |  54 lines

  1. {
  2. FileCopy: copies a file from one name to another.  It is called like this:
  3.   Success:=FileCopy(SourceName,DestName);
  4.  
  5. For instance,
  6.   BackupOK:=FileCopy(FName,FName+'.BAK');
  7.  
  8. or
  9.   If Not FileCopy(SourceDrive+'PART3.OVR',DestDrive+'PART3.OVR') Then
  10.     Abort('Unable to copy overlay 3, aborting installation');
  11.  
  12. (That last should not be considered an example of how to write a good
  13. installation program!!)
  14.   -  Bela Lubkin
  15.      CompuServe 76703,3015
  16.      2/6/86
  17. }
  18.  
  19. Type _FC_String66=String[66];
  20.  
  21. Function FileCopy(Source,Dest: _FC_String66): Boolean;
  22.   Const
  23.     BufSize=16384; { Powers of 2 are good here }
  24.   Var
  25.     SF,DF: File;
  26.     Buffer: Array [1..BufSize] Of Byte;
  27.     Error: Boolean;
  28.     RecsRead: Integer;
  29.   Begin
  30.     FileCopy:=False;
  31.     Assign(SF,Source);
  32.     {$I-}
  33.     Reset(SF,1);
  34.     If IOResult<>0 Then Exit;
  35.     Assign(DF,Dest);
  36.     Rewrite(DF,1);
  37.     If IOResult<>0 Then
  38.      Begin
  39.       Close(SF);
  40.       Exit;
  41.      End;
  42.     Error:=False;
  43.     Repeat
  44.       BlockRead(SF,Buffer,BufSize,RecsRead);
  45.       If IOResult<>0 Then Error:=True;
  46.       If Not Error And (RecsRead<>0) Then BlockWrite(DF,Buffer,RecsRead);
  47.       If IOResult<>0 Then Error:=True;
  48.     Until (RecsRead<BufSize) Or Error;
  49.     Close(SF);
  50.     Close(DF);
  51.     {$I+}
  52.     FileCopy:=Not Error;
  53.   End;
  54.